package com.zh.note.leetcode.string;

/**
 * 题目：最长回文子串
 * 给你一个字符串 s，找到 s 中最长的回文子串。
 * <p>
 * 如果字符串的反序与原始字符串相同，则该字符串称为回文字符串。
 * 示例 1：
 * <p>
 * 输入：s = "babad"
 * 输出："bab"
 * 解释："aba" 同样是符合题意的答案。
 * 示例 2：
 * 输入：s = "cbbd"
 * 输出："bb"
 */
public class LongestPalindrome {
    /**
     * 暴力法
     *
     * @param s
     * @return
     */
    public static String longestPalindrome(String s) {
        if (s.length() < 2) {
            return s;
        }
        int maxLen = 1;
        int begin = 0;
        for (int i = 0; i < s.length() - 1; i++) {
            for (int j = i + 1; j <= s.length(); j++) {
                if ((j - i > maxLen) && isPalindrome(s.substring(i, j))) {
                    maxLen = j - i;
                    begin = i;
                }
            }
        }
        return s.substring(begin, begin + maxLen);

    }

    private static boolean isPalindrome(String substring) {
        for (int i = 0; i < substring.length(); i++) {
            if (substring.charAt(i) != substring.charAt(substring.length() - 1 - i)) {
                return false;
            }
        }
        return true;

    }

    private static boolean validPalindrome(String substring) {
        for (int i = 0; i < substring.length(); i++) {
            if (substring.charAt(i) != substring.charAt(substring.length() - 1 - i)) {
                return false;
            }
        }
        return true;

    }

    public boolean isPalindrome(int x) {
        if (x < 0) {
            return false;
        }
        String str = String.valueOf(x);
        for (int i = 0; i < str.length() / 2; i++) {
            if (str.charAt(i) != str.charAt(str.length() - 1 - i)) {
                return false;
            }
        }
        return true;

    }


    public static void main(String[] args) {
        // String str = "babad";
        // String str = "cbbd";
        String str = "bb";
        System.out.println(longestPalindrome(str));
    }
}
